package qnb.service.impl;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import qnb.dao.Course12Mapper;
import qnb.entity.Course1;
import qnb.entity.Course2;
import qnb.service.Course12Service;

import java.util.List;

@Service
public class Course12ServiceImpl implements Course12Service {

    @Autowired
    private Course12Mapper dao;

    /**
     * 添加课表（表头+表体）
     * @param obj 表头
     * @param list 表体
     * @return int
     */
    @Override
    public int insertCourse(Course1 obj, List<Course2> list) {
        int i = dao.insertCourse1(obj);
        dao.insertCourse2(obj.getCourse1Id(), list);
        return i;
    }

    /**
     * 修改课表（表体+表头）
     * @param obj
     * @param list
     * @return
     */
    @Override
    public int updateCourse(Course1 obj, List<Course2> list) {
        int i = dao.updateCourse1(obj);
        //对于表体的修改，先删除之前的旧表体。再执行新增。（注：此方案不是最优方案）
        // 最优方案，应该 检出 集合中的表体数据，哪些是删除，那些是新增，那些是修改，针对性操作。
        //以后优化提醒：注册被删除的数据，有没有被其他表引用。如果有，其他表会报错。
        dao.dellCourse2(obj.getCourse1Id());//先删除指定表体
        dao.insertCourse2(obj.getCourse1Id(), list);//再执行新增表体
        return i;
    }

    /**
     * 删除指定课表（表头+表体）
     * @param id
     * @return int
     */
    @Override
    public int dellCourse(int id) {
        int i= dao.dellCourse1(id);
        dao.dellCourse2(id);
        return i;
    }
    /**
     * 表头：查询一个，通过主键
     * @param id 主键
     * @return int
     */
    public Course1 select1ById(int id) {
        return dao.select1ById(id);
    }
    /**
     * 表头：查询
     * @param where 条件
     * @param oderby 排序
     * @param page 页码
     * @param pageSize 记录数/页
     * @return List
     */
    @Override
    public List<Course1> select(String where, String oderby, int page, int pageSize) {
        return dao.select1(where, oderby, page, pageSize);
    }
    /**
     * 表头：查询总记录数
     * @param where 条件
     * @return int
     */
    @Override
    public int select1Count(String where) {
        return dao.select1Count(where);
    }

    /**
     * 表体：通过表头主键查询
     * @param course1Id 表头主键
     * @return List
     */
    @Override
    public List<Course2> select2ByCourse1Id(int course1Id) {
        return dao.select2ByCourse1Id(course1Id);
    }
}